package com.ctshk.rpc.order.scenic.req.app;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

@Data
@ApiModel(value = "ScenicOrderAppPlaceOrderReq", description = "景点门票-APP-提交订单")
public class ScenicOrderAppPlaceOrderReq implements Serializable {
    @NotNull(message = "景点产品ID不能为空")
    @ApiModelProperty(value = "景点产品id",required = true)
    private Long productId;

    @NotNull(message = "景点规格场次ID不能为空")
    @ApiModelProperty(value = "景点规格id",required = true)
    private Long stockId;

    @ApiModelProperty(value = "景点产品门票id,多个逗号分隔")
    private String productTicketsId;

    @ApiModelProperty(value = "备注")
    private String remark;

    @ApiModelProperty(value = "优惠券代码")
    private String couponCode;

    @ApiModelProperty(value = "优惠券抵扣金额")
    private BigDecimal couponDeduction;

    @ApiModelProperty(value = "会员积分抵扣(100积分抵扣1元人民币,需换算)")
    private BigDecimal integralDeduction;

    @ApiModelProperty(value = "积分")
    private Integer integral;

    @ApiModelProperty(value = "使用积分")
    private Integer usingPoints;

    @ApiModelProperty(value = "会员ID")
    private Long memberId;

    @NotNull(message = "订单总额不能为空")
    @ApiModelProperty(value = "订单总额",required = true)
    private BigDecimal orderAmount;

    @ApiModelProperty(value = "付款状态")
    private Integer paymentStatus;

    @ApiModelProperty(value = "预定状态")
    private Integer scheduledStatus;

    @ApiModelProperty(value = "取消状态")
    private Integer cancelStatus;

    @NotNull(message = "产品类型不能为空")
    @ApiModelProperty(value = "产品类型",required = true)
    private Integer productType;

    @ApiModelProperty(value = "付款到期时间")
    private LocalDateTime payExpireDate;

    @ApiModelProperty(value = "销售方式(1：单品销售 2：打包销售")
    private Integer salesMethods;

    @ApiModelProperty(value = "联系人姓")
    private String surname;

    @ApiModelProperty(value = "联系人名")
    private String name;

    @ApiModelProperty(value = "联系人姓名")
    private String contactCame;

    @ApiModelProperty(value = "联系人手机")
    private String contactMobile;

    @ApiModelProperty(value = "联系人手机区号id")
    private Long contactMobileAreaCodeId;

    @ApiModelProperty(value = "联系人手机区号")
    private String contactMobileAreaCode;

    @ApiModelProperty(value = "联系人邮箱")
    private String contactEmail;

    @ApiModelProperty(value = "称谓(1:先生;2:女士;3:小姐;4:男童;5:女童)")
    private Integer appellation;

    @NotNull(message = "门票数量不能为空")
    @ApiModelProperty(value = "门票数量",required = true)
    private Integer productTicketNumber;

    @ApiModelProperty(value = "单张门票价格")
    private BigDecimal singleTicketFee;

    @ApiModelProperty(value = "联络人英文名")
    private String contactEnName;

    @ApiModelProperty(value = "联络人英文姓")
    private String contactEnSurname;

    @NotNull(message = "旅客信息列表不能为空")
    @ApiModelProperty(value = "旅客信息列表",required = true)
    private List<ScenicOrderAppPlaceOrderTouristReq> touristList = new ArrayList<>();

    @ApiModelProperty(value = "门票总额")
    private BigDecimal ticketsFee;

    @ApiModelProperty(value = "服务费(单服务费*门票数)")
    private BigDecimal serviceFee;

    @NotNull(message = "预订服务费不能为空")
    @ApiModelProperty(value = "预订服务费", required = true)
    private BigDecimal reserveCharge;

    @ApiModelProperty(value = "C端下单用户id",hidden = true)
    private Long userId;
}